import sqlite3

# 连接到SQLite数据库
db_path = r'd:\manage1\graduation-project\manage1\manage1\manage\db.sqlite3'
conn = sqlite3.connect(db_path)
cursor = conn.cursor()

try:
    # 1. 修复ID为7的用户记录（有问题的记录）
    print("修复ID为7的用户记录...")
    cursor.execute(
        "UPDATE property_user SET user_type = '管理员', username = 'root', password = 'root123' WHERE id = 7"
    )
    conn.commit()
    print("ID为7的用户记录已修复")
    
    # 2. 检查并修复所有用户记录的格式问题
    print("\n检查所有用户记录...")
    cursor.execute("SELECT id, user_type, username, password FROM property_user")
    rows = cursor.fetchall()
    
    for row in rows:
        user_id, user_type, username, password = row
        updates = []
        params = []
        
        # 修复用户类型格式
        if user_type.lower() == 'admin':
            updates.append("user_type = ?")
            params.append('管理员')
        
        # 确保用户名不为空
        if not username or username.strip() == "":
            updates.append("username = ?")
            params.append(f'user_{user_id}')
        
        # 确保密码不为空
        if not password or password.strip() == "":
            updates.append("password = ?")
            params.append(f'password_{user_id}')
        
        # 执行更新
        if updates:
            params.append(user_id)
            query = f"UPDATE property_user SET {', '.join(updates)} WHERE id = ?"
            cursor.execute(query, params)
            conn.commit()
            print(f"已修复ID为{user_id}的用户记录")
    
    # 3. 验证修复后的结果
    print("\n修复后的用户数据:")
    cursor.execute("SELECT * FROM property_user")
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    
    print("\n数据库修复完成")
    
    # 4. 添加预防措施：创建函数确保用户类型格式正确
    print("\n创建用户数据验证函数...")
    print("请在添加新用户前确保：")
    print("1. 用户类型必须是'管理员'或'普通用户'")
    print("2. 用户名和密码不能为空字符串")
    print("3. 用户名必须唯一")
    
except Exception as e:
    print(f"修复过程中出错: {str(e)}")
    conn.rollback()
finally:
    conn.close()